#ifndef __AsyncLogger_h__
#define __AsyncLogger_h__

#include <iostream>
#include <interfaces/Logger.h>

using namespace Greatewall::Interface;

namespace Greatewall
{
    namespace Utils
    {
        class AsyncLogger : Logger
        {
        public:
            AsyncLogger(std::ostream& stream)
                : Logger(stream)
                , _level(INFO)
            {}

            virtual
            ~AsyncLogger()
            {}

            virtual bool
            log(LogLevel level, std::string& logInfo);

            virtual bool
            log(LogLevel level, const char* format, ...);

        protected:
            LogLevel    _level;
        };
    }
}

#endif
